<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="banner-heading flex_ccenter">
            <div class="heading-item">
              <h1 class="title fw700 f-42 c-fff">
                Πρόγραμμα λήψης φωτογραφιών Instagram
              </h1>
              <h2 class="sub c-fff f-18 fw400">
                Λήψη φωτογραφίας από το Instagram
              </h2>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                  type="text"
                  class="input f-18"
                  v-model="input"
                  @input="handleInput"
                  @paste="handleInput"
                  placeholder="Paste URL Instagram"
                  list="fruits"
                  name="fruit"
                />
                <datalist id="fruits">
                  <option value="Apple"></option>
                  <option value="Banana"></option>
                  <option value="Cherry"></option>
                </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Ανάκτηση δεδομένων, περιμένετε μερικά δευτερόλεπτα!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Ο ιστότοπος δεν μπορεί να επεξεργαστεί τον σύνδεσμό σας επειδή
              είναι ιδιωτικός
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Τα δεδομένα που εισαγάγατε δεν είναι σύνδεσμος. Εισαγάγετε έναν
              έγκυρο σύνδεσμο, για παράδειγμα:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Λήψη με την εφαρμογή Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Η εφαρμογή μας προσφέρει μια γρήγορη και απλή λύση για τη λήψη
                βίντεο Instagram, παρέχοντας βίντεο ποιότητας HD χωρίς
                υδατογραφήματα.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Λήψη φωτογραφιών Instagram με το Savinginsta
            </h3>
            <p class="f-16 c-ccc">
              Με χιλιάδες δημοσιεύσεις και εκατοντάδες χιλιάδες likes Καθημερινά
              στο Instagram, πολλοί χρήστες του Instagram επιθυμούν να
              αποθηκεύσουν αυτές τις αναρτήσεις τους προσωπικούς τους
              υπολογιστές. Πρόγραμμα λήψης φωτογραφιών Instagram του Savinginsta
              είναι εδώ για να καλύψει αυτήν την ανάγκη, βοηθώντας σας να
              αποθηκεύσετε φωτογραφίες Instagram εύκολα. Είναι απλό στη χρήση
              και επιτρέπει απεριόριστες λήψεις. Όποιες αναρτήσεις σας αρέσουν
              στο Instagram, το Savinginsta μπορεί να σας βοηθήσει στη λήψη
              τους.
            </p>
            <p class="f-16 c-ccc">
              Το Savinginsta είναι ένα πρόγραμμα λήψης φωτογραφιών Instagram
              (IG) που απλοποιεί αποθήκευση εικόνων από το Instagram. Είναι
              εντελώς δωρεάν και ασφαλές. Οχι απαιτείται εγκατάσταση λογισμικού
              στον υπολογιστή ή το κινητό σας τηλέφωνο; το μόνο που χρειάζεστε
              είναι ένας σύνδεσμος φωτογραφίας Instagram. Η επεξεργασία είναι
              γίνεται από την πλευρά μας, ώστε να είστε μόνο ένα κλικ μακριά από
              τη λήψη εικόνες στις συσκευές σας.
            </p>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Πώς να αποθηκεύσετε (Λήψη) φωτογραφίες Instagram χρησιμοποιώντας το Savinginsta;
              </h3>
            </div>
            <div class="steps">
              <p class="super f-16 fw700">
                Είναι απίστευτα εύκολο. Εδώ είναι ένας αναλυτικός οδηγός:
              </p>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Βήμα 01:</span>
                  <span class="f-16 c-000"
                    >Βρείτε την ανάρτηση στο Instagram με την αγαπημένη σας εικόνα και αποκτήστε
                     ο σύνδεσμος.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Βήμα 02:</span>
                <span class="f-16 c-000"
                  >Μεταβείτε στη σελίδα Savinginsta και επικολλήστε τον σύνδεσμο στο
                   γραμμή εργαλείων.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Βήμα 03:</span>
                <span class="f-16 c-000"
                  >Κάντε κλικ στο κουμπί Λήψη για να αποθηκεύσετε τη φωτογραφία στην προσωπική σας
                   συσκευή.</span
                >
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Πώς να κατεβάσετε φωτογραφίες από το Instagram (Insta) στο iPhone
              </h3>
              <div class="note c-ccc f-16">
                Σημείωση: Η λήψη φωτογραφιών Instagram λειτουργεί μόνο εάν το iPhone σας είναι 6s
                 (6s Plus) ή νεότερη έκδοση.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Βήμα 01:</span>
                  <span class="f-16 c-000"
                    >Ανοίξτε το Instagram στο iPhone σας, επιλέξτε τη φωτογραφία Instagram
                     ανάρτηση που θέλετε να αποθηκεύσετε και αντιγράψτε τη διεύθυνση URL της φωτογραφίας κάνοντας κλικ
                     τις 3 τελείες πάνω από την ανάρτηση.
                  </span>
                </div>
              </div>
              <div class="photo-bg">
                <img
                  class="img"
                  src="/static/images/instagram-photo-download.webp"
                  alt="copy the Instagram photo URL and paste"
                />
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Βήμα 02:</span>
                <span class="f-16 c-000"
                  >Ανοίξτε το Instagram Photo Downloader με το Safari και επικολλήστε το
                   διεύθυνση URL φωτογραφίας στη γραμμή εργαλείων.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Βήμα 03:</span>
                <span class="f-16 c-000"
                  >Κάντε κλικ στο κουμπί Λήψη και, στη συνέχεια, επιλέξτε έναν διακομιστή για να ξεκινήσει η αποθήκευση του
                   Φωτογραφία Instagram.</span
                >
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              <p>
                Το εργαλείο μας έχει σχεδιαστεί για να σας βοηθά να κατεβάζετε βίντεο και εικόνες
                 μεταφορτώθηκε από τον δικό σας λογαριασμό. Διατηρούμε το δικαίωμα να αρνηθούμε
                 υπηρεσία εάν τα εργαλεία μας χρησιμοποιούνται για την παραβίαση του απορρήτου άλλων
                 και υλικό.
              </p>

              <a class="fw700 c-blue" href="/terms-of-service"
                >Διαβάστε τους πλήρεις Όρους Παροχής Υπηρεσιών μας εδώ.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Εργαλεία</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/el/instagram-story-download"
                      >Instagram Story Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/el/instagram-reels-video-download"
                      >Πρόγραμμα λήψης τροχών Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Υποστήριξη</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Επικοινωνία </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Νομικός</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Terms of Service
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Πολιτική Απορρήτου </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Δεν είμαστε συνδεδεμένοι με το Instagram ή το Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>
  
  <script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  head: {
    htmlAttrs: {
      lang: "el",
    },
    bodyAttrs: {
      "data-lang": "el",
    },
    title:
      "Instagram Photo Downloader - Λήψη φωτογραφιών Instagram με το Savinginsta",
    meta: [
      { property: "og:locale", content: "el" },

      //Page Information
      {
        name: "description",
        content:
          "Instagram Photo Downloader που σας επιτρέπει να κατεβάζετε φωτογραφίες υψηλής ποιότητας στο διαδίκτυο. Με το εργαλείο Savinginsta Instagram Photo Download, μπορείτε να κάνετε λήψη των φωτογραφιών γρήγορα. Χωρίς υδατογραφήματα.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Photo Downloader - Λήψη φωτογραφιών Instagram με το Savinginsta",
      },
      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Photo Downloader - Λήψη φωτογραφιών Instagram με το Savinginsta",
      },
      { property: "og:type", content: "website" },
      {
        property: "og:url",
        content: "https://savinginsta.com/el/instagram-photo-download",
      },

      {
        property: "og:description",
        content:
          "Instagram Photo Downloader που σας επιτρέπει να κατεβάζετε φωτογραφίες υψηλής ποιότητας στο διαδίκτυο. Με το εργαλείο Savinginsta Instagram Photo Download, μπορείτε να κάνετε λήψη των φωτογραφιών γρήγορα. Χωρίς υδατογραφήματα.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      {
        name: "twitter:url",
        content: "https://savinginsta.com/el/instagram-photo-download",
      },
      {
        name: "twitter:title",
        content:
          "Instagram Photo Downloader - Λήψη φωτογραφιών Instagram με το Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Instagram Photo Downloader που σας επιτρέπει να κατεβάζετε φωτογραφίες υψηλής ποιότητας στο διαδίκτυο. Με το εργαλείο Savinginsta Instagram Photo Download, μπορείτε να κάνετε λήψη των φωτογραφιών γρήγορα. Χωρίς υδατογραφήματα.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/el/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el/instagram-photo-download",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/el/instagram-photo-download",
      },
    ],
    script: [
      {
        json: {
          "@context": "http://schema.org",
          "@graph": [
            {
              "@type": "WebSite",
              name: "Savinginsta",
              alternateName: "Instagram downloader", 
              url: "https://savinginsta.com",
            },
            {
              "@type": "WebPage",
              name: "Instagram Photo Downloader - Λήψη φωτογραφιών Instagram με το Savinginsta",
              inLanguage: "el",
              description:
                "Instagram Photo Downloader που σας επιτρέπει να κατεβάζετε φωτογραφίες υψηλής ποιότητας στο διαδίκτυο. Με το εργαλείο Savinginsta Instagram Photo Download, μπορείτε να κάνετε λήψη των φωτογραφιών γρήγορα. Χωρίς υδατογραφήματα.",
              image: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg", //绝对路径
              url: "https://savinginsta.com/el/instagram-photo-download",
            },
          ],
        },
        type: "application/ld+json"
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Τι είναι το πρόγραμμα λήψης φωτογραφιών Instagram;`,
          content: `Είναι ένα εργαλείο που υποστηρίζει τη λήψη οποιωνδήποτε φωτογραφιών, αναρτήσεων Instagram στην προσωπική σας συσκευή. Μπορείτε να αποθηκεύσετε φωτογραφίες Insta σε υπολογιστή, Mac, Android, iOS και iPhone.`,
        },
        {
          title: `Μπορώ να κατεβάσω το Instagram Private Photos;`,
          content: `Όχι, το Savinginsta υποστηρίζει μόνο την αποθήκευση φωτογραφιών Instagram από δημόσιους λογαριασμούς.`,
        },
        {
          title: `Χρειάζεται να συνδεθώ κατά την αποθήκευση φωτογραφιών Instagram;`,
          content: `Όχι, δεν χρειάζεται να συνδεθείτε στον λογαριασμό σας. Το πρόγραμμα λήψης φωτογραφιών IG είναι πολύ ασφαλές.`,
        },
        {
          title: `Υποστηρίζει ο ιστότοπος λήψη φωτογραφιών Insta σε υπολογιστές;`,
          content: `Ναι, μπορείτε εύκολα να κάνετε λήψη βίντεο και φωτογραφιών στον υπολογιστή σας. Δείτε επίσης: Λήψη από το Insta σε υπολογιστή.`,
        },
        {
          title: `Μπορείτε να κατεβάσετε τη φωτογραφία Insta για Android;`,
          content: `Ναι, απλώς αντιγράψτε τον σύνδεσμο της ανάρτησης και επικολλήστε τον στο πλαίσιο στον ιστότοπό μας και, στη συνέχεια, αποθηκεύστε τον. Για περισσότερες πληροφορίες: Λήψη από το Insta στο Android.`,
        },
        {
          title: `Πού αποθηκεύεται η λήψη της φωτογραφίας IG μετά τη λήψη;`,
          content: `Τα βίντεο συνήθως αποθηκεύονται στο φάκελο "Λήψεις" σε Android Mobile και PC.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      let type = checkString(this.input);
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "photo",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "photo",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "photo",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "photo",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "photo",
          });
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "photo",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },
    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "video",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "video",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
  },
};
</script>
  <style lang="scss" scoped>
 @import "@/static/style/photo.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
  